package com.tarena.lbs.basic.rpc;

import com.tarena.lbs.base.protocol.model.Result;
import com.tarena.lbs.basic.api.TagApi;
import com.tarena.lbs.basic.api.pojo.TagDto;
import com.tarena.lbs.basic.pojo.po.TagLibraryPO;
import com.tarena.lbs.basic.pojo.vo.TagVO;
import com.tarena.lbs.basic.service.TagService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Slf4j
@Component
@DubboService
public class TagApiImpl implements TagApi {
    @Autowired
    private TagService tagService;
    
    @Override
    public List<TagDto> getTagsByArticleId(Integer articleId) {
        log.info("获取文章标签列表，articleId: {}", articleId);
        
        // 获取所有文章类型标签（tagType=0）
        Map<String, List<TagVO>> tagsMap = tagService.getTagsByType(0);
        List<TagDto> tagDtos = new ArrayList<>();
        
        // 遍历标签映射，转换为TagDto列表
        for (List<TagVO> tagVOs : tagsMap.values()) {
            for (TagVO tagVO : tagVOs) {
                if (tagVO.getTagLibraryBO() != null) {
                    TagDto tagDto = new TagDto();
                    BeanUtils.copyProperties(tagVO.getTagLibraryBO(), tagDto);
                    tagDtos.add(tagDto);
                }
            }
        }
        
        log.info("获取文章标签列表成功，共获取到{}个标签", tagDtos.size());
        return tagDtos;
    }
}